home *** CD-ROM | disk | FTP | other *** search
/ Workbench Designer 2 / Workbench Designer 2.iso / workbench-tools / finderv3 / source / finderv3gui.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-06-23  |  8.8 KB  |  379 lines

  1. #ifndef MAKE_ID
  2. #define MAKE_ID(a,b,c,d) ((ULONG) (a)<<24 | (ULONG) (b)<<16 | (ULONG) (c)<<8 | (ULONG) (d))
  3. #endif
  4.  
  5. /* Libraries */
  6. #include <libraries/mui.h>
  7. #include <libraries/gadtools.h> /* for Barlabel in MenuItem */
  8. #include <exec/memory.h>
  9.  
  10. /* Prototypes */
  11. #include <proto/muimaster.h>
  12. #include <proto/exec.h>
  13. #include <clib/alib_protos.h>
  14.  
  15. #include "FinderV3GUI.h"
  16.  
  17. struct ObjApp * CreateApp(void)
  18. {
  19.     struct ObjApp * Object;
  20.  
  21.     APTR    MNlabel1Project, MNlabel1About, MNlabel1AboutMUI, MNlabel1BarLabel0, MNlabel1BarLabel1, MNlabel1Hide;
  22.     APTR    MNlabel1Quit, MainMenuList, MainMenuSave, MainMenuBarLabel1, MainMenuPrint;
  23.     APTR    MainRoot, ListGroup, StringGroup, DrawerGroup, DrawerLabel, obj_aux0;
  24.     APTR    obj_aux1, ButtonGroup, AboutRoot, LogoImage;
  25.    APTR  ConfigGroup, caselabel, recurselabel;
  26.    APTR  Space_0, Space_1;
  27.  
  28.     if (!(Object = AllocVec(sizeof(struct ObjApp),MEMF_PUBLIC|MEMF_CLEAR)))
  29.         return(NULL);
  30.  
  31.    Space_0 = HVSpace;
  32.  
  33.    Space_1 = HVSpace;
  34.  
  35.     Object->STR_AboutText = "\033cV3.00\n\033cby Chris Jones\n©1997 Dynamic Software\nAll Rights Reserved.\n\nPlease consult the docs for more info.";
  36.  
  37.     Object->FileList = ListObject,
  38.         MUIA_Frame, MUIV_Frame_ReadList,
  39.         MUIA_List_ConstructHook, MUIV_List_ConstructHook_String,
  40.         MUIA_List_DestructHook, MUIV_List_DestructHook_String,
  41.       MUIA_List_Title, " ",
  42.     End;
  43.  
  44.     Object->FileList = ListviewObject,
  45.         MUIA_HelpNode, "Usage",
  46.         MUIA_Listview_Input, FALSE,
  47.         MUIA_Listview_List, Object->FileList,
  48.     End;
  49.  
  50.     ListGroup = GroupObject,
  51.         MUIA_HelpNode, "Usage",
  52.         MUIA_Frame, MUIV_Frame_Group,
  53.         MUIA_FrameTitle, "Files found:",
  54.         Child, Object->FileList,
  55.     End;
  56.  
  57.     Object->STR_DrawerPopup = String("", 80);
  58.  
  59.     Object->DrawerPopup = PopButton(MUII_PopDrawer);
  60.  
  61.     Object->DrawerPopup = PopaslObject,
  62.         MUIA_HelpNode, "Usage",
  63.         MUIA_Weight, 80,
  64.         MUIA_ControlChar, 'd',
  65.         MUIA_Popasl_Type, 0,
  66.         MUIA_Popstring_String, Object->STR_DrawerPopup,
  67.         MUIA_Popstring_Button, Object->DrawerPopup,
  68.          ASLFR_TitleText, "Please choose a drawer to search...",
  69.          ASLFR_DrawersOnly, TRUE,
  70.     End;
  71.  
  72.     DrawerLabel = TextObject,
  73.         MUIA_Text_PreParse, "\033r",
  74.         MUIA_Text_Contents, "Drawer:",
  75.         MUIA_Weight, 20,
  76.         MUIA_ControlChar, 'd',
  77.         MUIA_InnerLeft, 0,
  78.         MUIA_InnerRight, 0,
  79.     End;
  80.  
  81.     DrawerGroup = GroupObject,
  82.         MUIA_HelpNode, "Usage",
  83.         MUIA_Group_Horiz, TRUE,
  84.         Child, DrawerLabel,
  85.         Child, Object->DrawerPopup,
  86.     End;
  87.  
  88.     Object->PatternStr = StringObject,
  89.         MUIA_Frame, MUIV_Frame_String,
  90.       MUIA_Weight, 80,
  91.         MUIA_ControlChar, 'p',
  92.         MUIA_HelpNode, "Usage",
  93.       MUIA_String_MaxLen, 80,
  94.     End;
  95.  
  96.     obj_aux1 = TextObject,
  97.       MUIA_Text_PreParse, "\033r",
  98.       MUIA_Text_Contents, "Pattern:",
  99.       MUIA_Weight, 20,
  100.       MUIA_ControlChar, 'p',
  101.       MUIA_InnerLeft, 0,
  102.       MUIA_InnerRight, 0,
  103.    End;
  104.  
  105.     obj_aux0 = GroupObject,
  106.         MUIA_Group_Columns, 2,
  107.         Child, obj_aux1,
  108.         Child, Object->PatternStr,
  109.     End;
  110.  
  111.     StringGroup = GroupObject,
  112.         MUIA_HelpNode, "Usage",
  113.         Child, DrawerGroup,
  114.         Child, obj_aux0,
  115.     End;
  116.  
  117.     Object->FindBut = SimpleButton("_Find");
  118.  
  119.     Object->QuitBut = SimpleButton("_Quit");
  120.  
  121.     ButtonGroup = GroupObject,
  122.         MUIA_HelpNode, "Usage",
  123.         MUIA_Frame, MUIV_Frame_Group,
  124.         MUIA_FrameTitle, "Actions:",
  125.         MUIA_Group_Columns, 2,
  126.         Child, Object->FindBut,
  127.         Child, Object->QuitBut,
  128.     End;
  129.  
  130.    caselabel = Label("Case sensitive");
  131.  
  132.    Object->casecheck = KeyCheckMark(FALSE, 'a');
  133.  
  134.    recurselabel = Label("Recursive");
  135.  
  136.    Object->recursecheck = KeyCheckMark(TRUE, 'r');
  137.  
  138.    ConfigGroup = GroupObject,
  139.       MUIA_HelpNode, "Usage",
  140.       MUIA_Group_Horiz, TRUE,
  141.       MUIA_Frame, MUIV_Frame_Group,
  142.       MUIA_FrameTitle, "Search options:",
  143.       Child, Space_0,
  144.       Child, caselabel,
  145.       Child, Object->casecheck,
  146.       Child, recurselabel,
  147.       Child, Object->recursecheck,
  148.       Child, Space_1,
  149.    End;
  150.  
  151.     MainRoot = GroupObject,
  152.         Child, ListGroup,
  153.       Child, ConfigGroup,
  154.         Child, StringGroup,
  155.         Child, ButtonGroup,
  156.     End;
  157.  
  158.     MNlabel1About = MenuitemObject,
  159.         MUIA_Menuitem_Title, "About...",
  160.         MUIA_Menuitem_Shortcut, "?",
  161.     End;
  162.  
  163.     MNlabel1AboutMUI = MenuitemObject,
  164.         MUIA_Menuitem_Title, "About MUI...",
  165.         MUIA_Menuitem_Shortcut, "M",
  166.     End;
  167.  
  168.     MNlabel1BarLabel0 = MUI_MakeObject(MUIO_Menuitem, NM_BARLABEL, 0, 0, 0);
  169.  
  170.    MNlabel1BarLabel1 = MUI_MakeObject(MUIO_Menuitem, NM_BARLABEL, 0, 0, 0);
  171.  
  172.    MNlabel1Hide = MenuitemObject,
  173.       MUIA_Menuitem_Title, "Hide",
  174.       MUIA_Menuitem_Shortcut, "H",
  175.    End;
  176.  
  177.     MNlabel1Quit = MenuitemObject,
  178.         MUIA_Menuitem_Title, "Quit",
  179.         MUIA_Menuitem_Shortcut, "Q",
  180.     End;
  181.  
  182.     MNlabel1Project = MenuitemObject,
  183.         MUIA_Menuitem_Title, "Project",
  184.         MUIA_Family_Child, MNlabel1About,
  185.         MUIA_Family_Child, MNlabel1AboutMUI,
  186.         MUIA_Family_Child, MNlabel1BarLabel0,
  187.       MUIA_Family_Child, MNlabel1Hide,
  188.       MUIA_Family_Child, MNlabel1BarLabel1,
  189.         MUIA_Family_Child, MNlabel1Quit,
  190.     End;
  191.  
  192.     MainMenuSave = MenuitemObject,
  193.         MUIA_Menuitem_Title, "Save",
  194.         MUIA_Menuitem_Shortcut, "S",
  195.     End;
  196.  
  197.     MainMenuBarLabel1 = MUI_MakeObject(MUIO_Menuitem, NM_BARLABEL, 0, 0, 0);
  198.  
  199.     MainMenuPrint = MenuitemObject,
  200.         MUIA_Menuitem_Title, "Print",
  201.         MUIA_Menuitem_Shortcut, "P",
  202.     End;
  203.  
  204.     MainMenuList = MenuitemObject,
  205.         MUIA_Menuitem_Title, "List",
  206.         MUIA_Family_Child, MainMenuSave,
  207.         MUIA_Family_Child, MainMenuBarLabel1,
  208.         MUIA_Family_Child, MainMenuPrint,
  209.     End;
  210.  
  211.     Object->MainMenu = MenustripObject,
  212.         MUIA_Family_Child, MNlabel1Project,
  213.         MUIA_Family_Child, MainMenuList,
  214.     End;
  215.  
  216.     Object->MainWin = WindowObject,
  217.         MUIA_Window_Title, "Finder V3.00",
  218.         MUIA_Window_Menustrip, Object->MainMenu,
  219.         MUIA_Window_ID, MAKE_ID('0', 'W', 'I', 'N'),
  220.         MUIA_Window_AppWindow, TRUE,
  221.         WindowContents, MainRoot,
  222.     End;
  223.  
  224.     Object->AboutText = TextObject,
  225.         MUIA_Background, MUII_TextBack,
  226.         MUIA_Frame, MUIV_Frame_Text,
  227.         MUIA_Text_Contents, Object->STR_AboutText,
  228.         MUIA_Text_SetMin, TRUE,
  229.     End;
  230.  
  231.     LogoImage = ImageObject,
  232.         MUIA_Image_Spec, "5:PROGDIR:FinderLogo.iff",
  233.         MUIA_Image_FreeVert, TRUE,
  234.         MUIA_Image_FreeHoriz, TRUE,
  235.         MUIA_FixHeight, 30,
  236.         MUIA_FixWidth, 55,
  237.     End;
  238.  
  239.     Object->OkButton = SimpleButton("_Continue");
  240.  
  241.     AboutRoot = GroupObject,
  242.         MUIA_Background, MUII_RequesterBack,
  243.       Child, LogoImage,
  244.         Child, Object->AboutText,
  245.         Child, Object->OkButton,
  246.     End;
  247.  
  248.     Object->AboutWin = WindowObject,
  249.         MUIA_Window_Title, "About Finder V3.00",
  250.         MUIA_Window_ID, MAKE_ID('1', 'W', 'I', 'N'),
  251.         MUIA_Window_CloseGadget, FALSE,
  252.         MUIA_Window_SizeGadget, FALSE,
  253.         MUIA_Window_NoMenus, TRUE,
  254.         WindowContents, AboutRoot,
  255.     End;
  256.  
  257.     Object->App = ApplicationObject,
  258.         MUIA_Application_Author, "Chris Jones",
  259.         MUIA_Application_Base, "FINDER",
  260.         MUIA_Application_Title, "Finder V3.00",
  261.         MUIA_Application_Version, "$VER: Finder V3.00 " __AMIGADATE__,
  262.         MUIA_Application_Copyright, "Dynamic Software",
  263.         MUIA_Application_Description, "File Finder",
  264.       MUIA_Application_HelpFile, "HELP:FinderV3.guide",
  265.         SubWindow, Object->MainWin,
  266.         SubWindow, Object->AboutWin,
  267.     End;
  268.  
  269.  
  270.     if (!Object->App)
  271.     {
  272.         FreeVec(Object);
  273.         return(NULL);
  274.     }
  275.  
  276.     DoMethod(MNlabel1About,
  277.         MUIM_Notify, MUIA_Menuitem_Trigger, MUIV_EveryTime,
  278.         Object->AboutWin,
  279.         3,
  280.         MUIM_Set, MUIA_Window_Open, TRUE
  281.         );
  282.  
  283.     DoMethod(MNlabel1AboutMUI,
  284.         MUIM_Notify, MUIA_Menuitem_Trigger, MUIV_EveryTime,
  285.       MUIV_Notify_Application, 2, MUIM_Application_AboutMUI,
  286.       Object->MainWin
  287.         );
  288.  
  289.     DoMethod(MNlabel1Quit,
  290.         MUIM_Notify, MUIA_Menuitem_Trigger, MUIV_EveryTime,
  291.         Object->App,
  292.         2,
  293.         MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit
  294.         );
  295.  
  296.     DoMethod(MainMenuSave,
  297.         MUIM_Notify, MUIA_Menuitem_Trigger, MUIV_EveryTime,
  298.         Object->App,
  299.         2,
  300.         MUIM_Application_ReturnID, SaveList
  301.         );
  302.  
  303.     DoMethod(MainMenuPrint,
  304.         MUIM_Notify, MUIA_Menuitem_Trigger, MUIV_EveryTime,
  305.         Object->App,
  306.         2,
  307.         MUIM_Application_ReturnID, PrintList
  308.         );
  309.  
  310.    DoMethod(MNlabel1Hide,
  311.       MUIM_Notify, MUIA_Menuitem_Trigger, MUIV_EveryTime,
  312.       Object->App,
  313.       3,
  314.       MUIM_Set, MUIA_Application_Iconified, TRUE
  315.       );
  316.  
  317.    DoMethod(Object->FindBut,
  318.       MUIM_Notify, MUIA_Pressed, FALSE,
  319.       Object->App,
  320.       2,
  321.       MUIM_Application_ReturnID, FindPressed
  322.       );
  323.  
  324.     DoMethod(Object->MainWin,
  325.         MUIM_Notify, MUIA_Window_CloseRequest, TRUE,
  326.         Object->App,
  327.         2,
  328.         MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit
  329.         );
  330.  
  331.     DoMethod(Object->QuitBut,
  332.         MUIM_Notify, MUIA_Pressed, FALSE,
  333.         Object->App,
  334.         2,
  335.         MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit
  336.         );
  337.  
  338.     DoMethod(Object->MainWin,
  339.         MUIM_Window_SetCycleChain,
  340.         Object->DrawerPopup,
  341.         Object->PatternStr,
  342.       Object->FileList,
  343.         0
  344.         );
  345.  
  346.     DoMethod(Object->OkButton,
  347.         MUIM_Notify, MUIA_Pressed, FALSE,
  348.         Object->AboutWin,
  349.         3,
  350.         MUIM_Set, MUIA_Window_Open, FALSE
  351.         );
  352.  
  353.     DoMethod(Object->AboutWin,
  354.         MUIM_Window_SetCycleChain, Object->OkButton,
  355.         0
  356.         );
  357.  
  358.    set(Object->casecheck,
  359.       MUIA_InputMode, MUIV_InputMode_Toggle
  360.       );
  361.  
  362.    set(Object->recursecheck,
  363.       MUIA_InputMode, MUIV_InputMode_Toggle
  364.       );
  365.  
  366.     set(Object->MainWin,
  367.         MUIA_Window_Open, TRUE
  368.         );
  369.  
  370.  
  371.     return(Object);
  372. }
  373.  
  374. void DisposeApp(struct ObjApp * Object)
  375. {
  376.     MUI_DisposeObject(Object->App);
  377.     FreeVec(Object);
  378. }
  379.